A storage system is a special-purpose processing system used to store and retrieve data on behalf of one or more client processing systems (“clients”). A storage system can be used for many different purposes, such as, to provide multiple users with access to shared data or to backup mission critical data.
A file server is an example of a storage system. A file server operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices, such as magnetic or optical storage based disks or tapes. The mass storage devices may be organized into one or more traditional volumes of Redundant Array of Inexpensive Disks (RAID). The term “traditional volume” refers to a volume that has a fixed relationship with one or more physical mass storage devices, such as disks. A volume is a set of disks presented to an operating environment as a range of consecutively numbered logical blocks with disk-like storage and input/output semantics. Another example of a storage system is a device which provides clients with block-level access to stored data, rather than file-level access, or a device which provides clients with both file-level access and block-level access.
In conventional storage systems, there is a fixed relationship between a traditional volume and the disks that are associated with the traditional volume. This fixed relationship means that each traditional volume has full control over the disks that are associated with the volume. For example, only the traditional volume associated with the disk can read and/or write to the disk. Unused space within the disks associated with the traditional volume cannot be used by another traditional volume. Thus, even if a traditional volume is only using a fraction of the space on its associated disks, the unused space is reserved for the exclusive use of the traditional volume.
Another feature of the fixed relationship between a traditional volume and its associated disks, in conventional storage systems, is that the size of the traditional volume is equal to the capacity of the associated disks. This means that the size of the underlying physical storage dictates the size of the traditional volume. If a user wants to increase the size of the traditional volume, she must add disks to the physical storage (e.g., add a RAID group). Similarly, if the user wants to decrease the size of the traditional volume, she must remove disks from the physical storage.